package cn.edu.wynu.d12_extends_override;
/*
什么是方法重写?
当子类觉得父类中的某个方法不好用，或者无法满足自己的需求时，子类可以重写一个方法名称、
参数列表一样的方法，去覆盖父类的这个方法，这就是方法重写。
注意:重写后，方法的访问，Java会遵循就近原则。
*/

/*
方法重写的其它注意事项：
1、重写小技巧:使用Override注解，他可以指定java编译器，检查我们方法重写的格式是否正确，代码可读性也会更好。
2、子类重写父类方法时，访问权限必须大于或者等于父类该方法的权限(public>protected>缺省)。
3、重写的方法返回值类型，必须与被重写方法的返回值类型一样，或者范围更小。
4、私有方法、静态方法不能被重写，如果重写会报错的。
*/

/*
方法重写在开发中的常见应用场景
子类重写Object类的toString()方法，以便返回对象的内容。
*/

import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
        // 认识方法重写，掌握方法重写的常见应用场景
        B b = new B();
        b.print1();
        b.print2(1,2);

        System.out.println("--------------------");

        Student s = new Student("张三",20);
        System.out.println(s.toString()); // 输出对象的地址
        System.out.println(s); // 和上面输出的对象地址一样

        ArrayList list = new ArrayList();
        list.add("java");
        System.out.println(list);
    }
}
